package subraSoft.fenix.model.oldSystem;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import subraSoft.fenix.model.cliente.cobj.FenClienteCObj;
import subraSoft.fenix.model.cliente.service.FenClienteService;
import subraSoft.fenix.model.cliente.service.impl.FenClienteServiceImpl;
import subraSoft.fenix.model.provincia.enumerate.FenProvinciaEnum;
import subraSoft.fenix.model.reparacion.cobj.FenReparacionCObj;
import subraSoft.fenix.model.reparacion.service.FenReparacionService;
import subraSoft.fenix.model.reparacion.service.impl.FenReparacionServiceImpl;

public class FenCargaInicial
{
	private static Connection conn;
	private static FenReparacionService service = new FenReparacionServiceImpl();
	private static FenClienteService serviceCli = new FenClienteServiceImpl();
	
	public static void main(String[] args) throws Exception
	{
		if(args.length != 1)
		{
			System.out.println("Uso: FenCargaInicial <database base dir>");
			return;
		}
		
		Class.forName("jstels.jdbc.dbf.DBFDriver");
		conn = DriverManager.getConnection("jdbc:jstels:dbf:" + args[0]);
		
		cargaClientes();
		cargaReparaciones();
	}

	private static void cargaReparaciones() throws SQLException
	{
		System.out.println("Cargando reparaciones...");
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("SELECT * FROM REPARAC");
		
		int cantReps = 0;
		while (rs.next()) 
		{
			FenReparacionCObj rep = new FenReparacionCObj();
			
			rep.setAccesorios( rs.getString("ACCESORIOS") );
			rep.setEquipo( rs.getString("EQUIPO") );
			rep.setFechaCreacion( rs.getDate("FECHA") ); 
			rep.setFechaEntrega( rs.getDate("RETIRADO") );
			rep.setFechaFinalizacion( rs.getDate("TERMINADO") );
			rep.setMarca( rs.getString("MARCA") );
			rep.setObservaciones( rs.getString("PEDIDO3"));			
			rep.setPedido( rs.getString("PEDIDO1") );
			rep.setPrecio( rs.getDouble("PRECIO"));
			rep.setRealizado( rs.getString("REALIZADO") );
			rep.setSerie( rs.getString("SERIE"));
			
			try {
				service.saveOrUpdate(rep);
				cantReps++;
				System.out.println("Cargado: " + rep);
			} catch (Exception e) {
				System.err.println("Falla: " + rep); 
			}
		}
		
		System.out.println(cantReps + " reparaciones Cargadas");
	}
	
	private static void cargaClientes() throws SQLException
	{
		System.out.println("Cargando clientes...");
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("SELECT * FROM CLIENTES");
		
		int cantCli = 0;
		while (rs.next()) 
		{
			FenClienteCObj cli = new FenClienteCObj();
			
			cli.setCelular("");
			cli.setCodigoPostal( rs.getString("CODPOSTAL") );
			cli.setContacto( rs.getString("CONTACTO") );
			cli.setCuit( rs.getString("CUIT") );
			cli.setDireccion( rs.getString("DIRECCION") );
			cli.setDni("");
			cli.setEmail( rs.getString("EMAIL"));
			cli.setLocalidad( rs.getString("LOCALIDAD"));
			cli.setNombre( rs.getString("NOMBRE") );
			cli.setObservaciones("");
			cli.setProvincia( FenProvinciaEnum.BUENOS_AIRES.getNombre() );
			cli.setTelefono( rs.getString("TELEFONO") );
			cli.setTipoIVA( rs.getInt("TIPOIVA") );
			
			try {
				serviceCli.saveOrUpdate(cli);
				cantCli++;
				System.out.println("Cargado: " + cli);
			} catch (Exception e) {
				System.err.println("Falla: " + cli);
			}
		}
		
		System.out.println(cantCli + " clientes Cargadas");
	}
}
